Électronique sous GNU/Linux — 15 ans de Libre plus tard

Posté par  . Édité par bubar🦥, Davy Defaud, Ysabeau 🧶, ZeroHeure, Benoît Sibaud et palm123. Modéré par Ysabeau 🧶. Licence CC By‑SA.
87
11
avr.
2020
Do It Yourself

Ça fait plus de quinze ans que mon ordi tourne sous GNU/Linux, que je profite des dépêches de LinuxFr.org et puis, là, je me suis dit : bon sang, que de chemin parcouru par le Libre et les libristes. Je venais tout juste de terminer un projet complet, balayant toutes les étapes de conception à l’utilisation, alors ça y est, il fallait raconter, partager…

Premier petit aparté pour signaler que je suis électronicien de métier (matériel et logiciel embarqué), que j’utilise les mêmes logiciels au boulot et que cet article serait le même si je présentais un projet de ma boîte, mais mon patron serait moins partant pour un tel déballage !

Sommaire

Connected Fuyes  La première version fonctionnelle.

L’histoire

Il y a un moment déjà, je me suis mis au bandonéon, qui est l’accordéon du tango. C’est un instrument qui peut être très sonore : pendant quelques années j’ai possédé une cabine acoustique (une sorte de cabine téléphonique pour faire des prises de voix par exemple), et puis j’ai déménagé, je l’ai revendue et je me suis de nouveau senti coincé par la vie en appartement. Il fallait que je trouve une solution pour m’exercer chez moi sans gêner les voisins. Il existe des systèmes MIDI qui s’adaptent sur des accordéons mais je n’ai rien trouvé de spécifique au bandonéon. Je me suis donc lancé dans ce projet pour continuer à jouer discrètement l’hiver chez moi (l’été, je m’installe au soleil).

La réalisation

Il y a plusieurs façons de détecter le déclenchement d’une note : la plus chic, celle qui ne modifie pas l’instrument, est l’installation d’aimants sur les touches et de capteurs magnétiques en face. Le bandonéon est un instrument très compact et la conception de circuits imprimés ad hoc a été nécessaire. J’ai conçu un ensemble de cartes, main droite, main gauche, intégrant les capteurs à effet Hall, de quoi les alimenter et un composant « tampon » qui stocke l’état de chaque capteur, c’est‑à‑dire de chaque touche. À cela, j’ai ajouté une carte Arduino Micro qui lit l’état des boutons et génère les évènements MIDI correspondants.

Schéma électronique sous KiCad  Schéma électronique sous KiCad

Circuit imprimé sous KiCad  Circuit imprimé sous KiCad

Les schémas sont en blanc (Eeschema) et les circuits imprimés en noir (Pcbnew). Sinon ça ne pourrait pas fonctionner…

Vue 3D du circuit imprimé sous KiCad  Vue 3D du circuit imprimé depuis KiCad.

Le bandonéon est l’un des rares instruments stéréophoniques : les sonorités de la main droite sont différentes de celles de la main gauche car ce côté‑ci possède une petite caisse de résonance. Pour cette raison, et aussi pour éviter de passer du câble à l’intérieur soufflet, j’ai donc installé un module Arduino de chaque côté, générant donc deux instruments MIDI.

Magnet sensor
Les aimants sont installés à l’aide de Patafix.

Côté ordinateur, les modules Arduino sont détectés comme des instruments MIDI, fluidsynth (sans JACK) s’occupe de faire le lien entre ces appareils MIDI et une banque de sons. On a souvent dit (moi aussi…) du mal de la gestion du son sous GNU/Linux. Eh bien, j’ai été stupéfait de voir que la mise en œuvre a été très simple et que mes modules Arduino ont causé du premier coup ! J’ai simplement câblé mes périphériques MIDI sur MuseScore, un éditeur de partitions, avec lequel je fais des transcriptions (repique d’un morceau à l’oreille). Là encore, chapeau : utilisation simple, logiciel stable, résultat nickel, bravo le Libre !
Pour jouer simplement, de manière autonome, je me suis fait un synthétiseur portable dédié. Je fais tourner FluidSynth sur un Odroid C1+ avec une cape Hi‑Fi qui sort en connecteurs RCA direction l’ampli. Et ça fonctionne.

Je ne sais pas qui peut être intéressé par ce projet, qu’importe, j’ai tout mis en ligne sur GitLab.

Au taf

Les différences avec le boulot (petite structure d’environ 25 personnes, dont 8 développeurs) :

  • pour le système d’exploitation, aucune : j’utilise la dernière Ubuntu ;
  • pour le schéma et le routage, aucune : j’utilise KiCad, pour des circuits qui font jusqu’à quatre couches avec des microcontrôleurs et un peu de HF — que de progrès depuis la première version que j’ai utilisée où la fonction « annuler » n’existait pas (sic) ; c’est complet, efficace, la gestion de schémas et routages sur d’anciennes versions réserve malheureusement quelques surprises ;
  • pour la mécanique, aucune : j’utilise aussi FreeCAD, essentiellement pour de la visualisation, mais aussi pour concevoir de petites pièces de test, généralement de l’impression 3D ;
  • sur Arduino : le code est un peu sale pour moi qui ai l’habitude du C embarqué, avec des bibliothèques bien rangées, un programmateur/débogueur fiable, etc. ; mais pour ce genre de choses simples, c’est tout à fait suffisant — il m’arrive d’ailleurs d’utiliser des modules Arduino au boulot dans le cadre de tests : rapides à mettre en œuvre, si je veux tester un composant, un capteur, c’est vite câblé et j’ai rapidement des réponses à mes questions ;
  • pour le logiciel embarqué, j’utilise les outils de ST Micro ou de Silicon Labs, essentiellement TrueStudio, qui est un Eclipse adapté aux microcontrôleurs ST, et je couple ça à une sonde Segger ; c’est lourd, pas libre, mais ça tourne en natif sur mon poste Ubuntu. Même chose pour mon multimètre numérique de chez OTII : il y a un paquet Debian. Ça n’est pas libre, mais le simple fait que ça tourne sous GNU/Linux, c’est vraiment un changement incroyable par rapport à tous les outils (Microchip, WinAVR…) qui pompaient GCC pour ne le faire tourner que sur du proprio.

D’autres projets

Le projet s’est un peu étalé (comme au boulot, finalement !) et, entretemps, d’autres idées, par ailleurs libres, ont été publiées :

La suite

Aucune. Pour le moment, je joue ! Bien sûr, c’est améliorable, et comme c’est libre, avec un peu de chance, ce sera fait par d’autres.

L'instrument et le synthétiseur Odroid
De l’USB sur une mécanique des années 60.

Aller plus loin

  • # Bravo!! Et merci de partager

    Posté par  . Évalué à 6.

    tout est dit, ça a l'air bien cool tes projets, il faudrait que je trouve du temps pour jouer avec les mini-cartes Arduino que j'ai commandées sur un coup de tête il y a 2 ans… :'(

  • # temps nécessaire ?

    Posté par  (site web personnel, Mastodon) . Évalué à 7.

    Salut, c'est vraiment super merci beaucoup du partage. Je fais parti de ces devs logiciels attirés depuis longtemps par l'électronique mais qui ne trouve jamais le temps de s'y mettre sérieusement (surtout avec un gros projet logiciel sur les bras).

    Petites questions :

    combien de temps réel entre l'idée et la réalisation, et combien de temps tu y as vraiment consacré par semaine ?

    Pour la réalisation du circuit, tu as fait ça au boulot, ou par un tiers, ou tu as ce qu'il faut à la maison (comme je me souviens avoir fait à l'école, avec insoleuse et tout) ?

    Enfin question de débutant : est-ce qu'il est possible de simuler un tel circuit avec des outils libres avant de passer à la réalisation physique ?

    Merci et encore bravo !

    • [^] # Re: temps nécessaire ?

      Posté par  (site web personnel) . Évalué à 3.

      Avant de sortir l’artillerie lourde, le plus simple est de souder une carte à troue. Cela marche très bien pour un proto tant qu'il y a peu de connexion. Et les modifications sont rapides à faire.

      "La première sécurité est la liberté"

    • [^] # Re: temps nécessaire ?

      Posté par  . Évalué à 3.

      Bonjour Goffi,

      Je n'ai pas comptabilisé les heures, le projet s'est étalé sur des mois : j'y ai parfois passé une soirée (trouver des capteurs à effet Hall adaptés), parfois un dimanche (router les circuits) voir toutes les soirées d'une semaine (coller les aimants à la pâte à fix) ! L'idée est venue toute seule, les problèmes se sont réglés presque tous seuls, c'était assez idéal. Rétrospectivement le projet s'est un peu trop étalé mais voilà : c'est bouclé :)

      Le PCB est un 4 couches donc je l'ai fait sous-traiter, en ligne ça fonctionne très bien.

      Je ne crois pas que la simulation aurait apporté quelque chose à ce projet, le seul test que j'ai réalisé a été de vérifier que le capteur à effet Hall détecte l'aimant à une distance raisonnable. Pour prolonger mon article du point de vue du boulot, je dirais que le seul outil de simulation libre que j'ai utilisé est Qucs, pour des hautes fréquences uniquement.

      Ciao !

  • # Génial !

    Posté par  . Évalué à 2.

    Hello!

    J'allais me lancer dans une grande tirade très personnelle, vu que ton récapitulatif d'un chouette petit projet perso mené à une fin qui te convient, ainsi que ton intérêt pour l'utilisation du libre me touchent, mais je vais finalement plutôt faire soft :

    Bravo ! Félicitations pour le travail accompli, merci beaucoup d'avoir partagé ça sur le site, et bonne continuation pour tes prochains projets (ou une éventuelle suite de celui-ci), que tu partageras à nouveau, je l'espère, sur le site ! 👍

  • # Le bandonéon

    Posté par  . Évalué à 1.

    Pour ceux qui ne connaissent pas le bandonéon, voici une vidéo de présentation :
    Expérience musicale

  • # Pour Info

    Posté par  . Évalué à 7.

    Félicitation pour ton projet, c'est simple, c'est beau :O

    Par contre, pour info :
    Ça n’est pas libre, mais le simple fait que ça tourne sous GNU/Linux, c’est vraiment un changement incroyable par rapport à tous les outils (Microchip, WinAVR…) qui pompaient GCC pour ne le faire tourner que sur du proprio.
    Il y a quelques années (5 ou 6, je crois), Microchip a abandonné son IDE pour utiliser une base Netbeans.
    Maintenant, cela tourne sous Linux sans problème (c'est du java) et les programmeur/débuggeur de moins de 10 ans sont supportés (cf leur site).
    J'utilise leur IDE au quotidien sur Slackware 14.

  • # Infos supplémentaires

    Posté par  . Évalué à 1.

    Salut,
    Si tu veux programmer des ARM, des Arduino, ESP8266, ESP32,… , tu peux utiliser Visual Studio Code de Microsoft (aussi étrange que cela puisse paraître c'est opensources) couplé avec Platformio.
    Pour les sondes JTAG, tu peux en trouver chez Olimex avec leur schéma.
    Pour la simulation de schémas électroniques, tu peux prendre LTSpice qui est gratuit et qui fonctionne très bien sous Wine.
    J'utilise tout ça sous OpenSuse et ça marche nikel.
    @+

    • [^] # Re: Infos supplémentaires

      Posté par  (site web personnel) . Évalué à 5.

      Si on va par là, plutôt utiliser VSCodium, dont la relation à Visual Studio Code est comparable à celle de Chromium avec Google Chrome.

      Pour nous émanciper des géants du numérique : Zelbinium !

  • # Commentaire supprimé

    Posté par  . Évalué à -2. Dernière modification le 13 avril 2020 à 09:37.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Quid de l'acoustique

    Posté par  . Évalué à 6. Dernière modification le 13 avril 2020 à 02:06.

    Bravo pour cette réalisation. L'idée de départ étant de pouvoir contrôler le volume sonore sans cabine d'isolation, comment as tu fait pour supprimer le son acoustique ? Y a t-il une modification sur le système des anches et sur le passage de l'air ? ou une sourdine ?
    Et autre question, comment est rendu numériquement l'intensité du son donnée par la force (variable) des soufflets ?

    • [^] # Re: Quid de l'acoustique

      Posté par  (Mastodon) . Évalué à 3. Dernière modification le 13 avril 2020 à 10:56.

      Pour le mettre en sourdine il me semble qu'il suffit de ne pas tirer ou pousser sur le soufflet.

      Après est-ce que c'est dur de se retenir, j'imagine que oui mais n'a a t-il pas des crochets/sangles qui servent pour le maintenir "fermé" pour le transport ?

      • [^] # Re: Quid de l'acoustique

        Posté par  . Évalué à 3.

        Il me semble que tirer ou pousser le soufflet ne fait pas la même chose ?

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: Quid de l'acoustique

          Posté par  . Évalué à 4.

          Mon instrument produit les mêmes sons en tirant et en poussant, c'est un système Péguri, populaire en France. Mais effectivement, à l'origine, le système allemand, celui qui s'est exporté en Argentine, est dit bi-sonore ne produit pas les mêmes sons en tirant qu'en poussant.

    • [^] # Re: Quid de l'acoustique

      Posté par  . Évalué à 8.

      C'est une bonne question, la réponse est un peu compliquée !

      Sur un accordéon, il y a un système de registres : ceux-ci vont orienter l'air d'une touche vers une lame plutôt qu'une autre. Le système est similaire à un orgue sur lequel ces registres (tirettes) vont sélectionner un jeu de tuyaux plutôt qu'un autre. Dans les deux cas, il suffit de sélectionner un registre vide, sans anche, de manière à ne pas produire de son.
      Sur un bandonéon il n'y a pas de registre, le lien est direct entre le soufflet, la touche, la lame, le son. Pour atténuer voir couper le son, il y a deux bricolages : recouvrir l'instrument d'un sac de couchage (sic), jouer avec ce système MIDI sans utiliser le soufflet. Je suis conscient que c'est très limitant par rapport aux capacités de l'instrument mais ça me permet de pratiquer librement !

      Pour aller plus loin je dirais que si j'avais un deuxième instrument, je bloquerais les lames et j'ajouterais un capteur de pression pour moduler l'intensité sonore. Une jolie suite pour ce projet…

      • [^] # Re: Quid de l'acoustique

        Posté par  . Évalué à 4.

        Il n'y a pas de «soupape» comme sur les concertina et les accordéons «classiques» ?

        Par soupape, j'entends un bouton qui permet de vider le soufflet rapidement. Si c'est le cas, en le maintenant ouvert (au pouce ou avec un autre système), tu n'arriveras probablement pas à imposer assez de pression dans le soufflet pour jouer de manière (très) sonore…

        Par exemple, la manette visible sur
        https://fr.wikipedia.org/wiki/Bandon%C3%A9on#/media/Fichier:Bandoneon-curved.jpg
        qui serait accessible au pouce de la main droite ?

        • [^] # Re: Quid de l'acoustique

          Posté par  . Évalué à 4.

          Effectivement il y a bien une soupape sur les bandonéons mais jouer avec le soufflet ouvert change complètement les sensations, l'instrument dégouline littéralement !

          • [^] # Re: Quid de l'acoustique

            Posté par  (site web personnel, Mastodon) . Évalué à 2.

            C'est une sensation tactile (qui influe, du coup, sur la qualité du jeu) ou audio ? Dans le dernier cas, est-ce que tu as des liens à nous donner pour qu'on entende la différence ?

            Merci.

            « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

            • [^] # Re: Quid de l'acoustique

              Posté par  . Évalué à 6.

              L'aspect "dégoulinant" ? C'est tactile : le bandonéon est posé sur les genoux et c'est le poids de l'instrument qui va agir sur le soufflet et produire un son au moment où l'on appuie sur une touche. En partant soufflet fermé, les deux côtés, contenant les anches et la mécanique, vont tomber et donc tirer sur le soufflet. On utilise ensuite les genoux pour contrôler la "vitesse de chute" et donc le volume sonore. Même chose en fermant le soufflet. L'idée est de ne pas utiliser ses bras, juste ses doigts pour déclencher une note…

              Contrairement à l'accordéon surnommé "piano à bretelles" le bandonéon est posé, on profite du poids pour générer le flux d'air qui fera vibrer les anches. Une vidéo que j'espère plus parlante ! Nunca Tuvo Novio (Youtube)

              • [^] # Re: Quid de l'acoustique

                Posté par  (site web personnel, Mastodon) . Évalué à 3.

                Merci.

                Et comme j'avais des souvenirs d'Astor Piazzola jouant debout, je suis allée voir des vidéos où il apparaît. C'est donc pour ça qu'il y un genre de marchepied sur lequel est posé l'un de ses pieds !

                « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

                • [^] # Re: Quid de l'acoustique

                  Posté par  . Évalué à 4.

                  Tout à fait, tu peux même remarquer que Piazzolla joue très essentiellement en ouvrant : il utilise la soupape pour refermer le soufflet…

              • [^] # Re: Quid de l'acoustique

                Posté par  . Évalué à 1.

                Merci pour ces précisions.
                Est-ce que les côtés «chutent» plus vite quand la soupape est ouverte ? autrement dit, est-ce que le geste du musicien «branché» (celui qui veut jouer via l'interface électronique que tu as créé) devrait avoir à s'adapter au fait de jouer soupape ouverte ?

                Autre piste : niveau rayonnement acoustique, le son sort essentiellement par les «ouies» placées sous les poignets (visible sur le video), éventuellement un peu par le soufflet ? si oui, est-ce que des «étouffoirs» sur ces «ouies» seraient possibles ? À la réflexion, il y a au moins deux difficultés : les baguettes sur lesquelles sont fixées les sangles peuvent difficulter la pose des étouffoirs, et surtout il faut garder un passage pour l'air qui passe par les anches, non ?

                • [^] # Re: Quid de l'acoustique

                  Posté par  . Évalué à 2.

                  Clairement : jouer avec la soupape ouverte n'est pas possible. Difficile de trouver une analogie, peut-être un vélo d'appartement dont la roue ne serait pas freinée ? Dans ce cas il faudrait pédaler à fond : au delà même de l'aspect usant, cela n'aurait aucun rapport avec faire du vélo.
                  Quand j'utilise mon système MIDI, je n'utilise pas le soufflet. C'est une limitation importante mais sincèrement, assimiler les doigtés d'un morceau, pratiquer des gammes, des enchaînements d'accords… Ça se fait très bien sans soufflet.

                  En ce qui concerne étouffer le son, j'imagine qu'on pourrait freiner les lames de manière à limiter leur résonance. Le tout sans changer leur résonance ni le comportement global de l'instrument : ça me semble compliqué.
                  Encore une fois je vois deux solutions :
                  - étouffer globalement l'instrument, je fais ça avec un sac de couchage (léger), pas cher, assez efficace.
                  - avoir un instrument dédié sur lequel les lames seraient bloquées. L'air passe encore donc le comportement du soufflet est intact et on ajouterai un capteur de pression pour ajuster le volume. Et cette dernière partie est à mon avis un vrai sujet en soit !

                  • [^] # Re: Quid de l'acoustique

                    Posté par  . Évalué à 2.

                    J'ai trouvé une vidéo de démonstration d'un accordéon diatonique de Roland, modèle FR-18D qui explique bien tous les avantages du numérique et en particulier "le système de détection pneumatique réelle de la pression du soufflet (capteur de pression à haute résolution), régulateur de résistance de soufflet sans prise d'air".

  • # Sensors

    Posté par  . Évalué à 5.

    Pour moi il te manqueun capteur de pression pour régler l’intensité des notes.

    Si tu arrives à continuer le projet ça peut aller beaucoup plus loin… EN plus, il y a plein de soundfonts libre sur le net.

    Je suis accordéoniste, et quand je vois qu'un digit de chez cavagnolo vaux minimum 7500€ ça me laisse rêveur…

    J'avais idée de faire un projet dans le genre, cependant mes connaissances en électronique mon arrêté.

  • # La gloire internationale !

    Posté par  (Mastodon) . Évalué à 10.

    We think this in a well-executed solution to a real problem, without overdoing it on the tech side. All the details, including KiCad PCB files and Arduino code, is up on Github, so feel free to use and modify it to build on your own musical talents.

    https://hackaday.com/2020/04/13/quieting-down-a-bandoneon-accordian-with-midi/

    • [^] # Re: La gloire internationale !

      Posté par  . Évalué à 5.

      Effectivement, la gloire :)

      Pour être un peu plus précis, j'ai écrit cet article pour Linuxfr parce que ça fait longtemps que je profite d'articles d'autres libristes. En tout cas l'idée était de faire un petit état du libre dans mon domaine, l'embarqué, en partant d'un projet perso.

      Le projet en lui même je l'ai posté sur un dépôt Git, parce que c'est bien pratique, et en ligne, pour le partager. J'ai aussi déposé le projet commenté sur hackaday.io (BandoMIDI). Pour qu'il soit repris sur hackaday.com. Et ça a bien marché car un confrère libriste/bandéoniste, confronté aux mêmes soucis de volume sonore, est tombé sur l'article et a depuis posté son projet à lui sur GitLab ! Je remarque simplement que lui comme moi aurions pu mettre en ligne nos projets avant la fin… Ce sera pour le prochain, promis.

  • # Simulation avec Kicad

    Posté par  . Évalué à 4.

    Comme j'avais bien galéré à débrousailler ce sujet, j'en profite pour partager un petit tutoriel de Sitelec.org sur la simulation avec Kicad, à l'écriture duquel j'ai contribué.
    En espérant que ça aide !

    Je ne cautionne pas les captures d'écran sous Windows :P

  • # Commentaire supprimé

    Posté par  . Évalué à -7. Dernière modification le 03 avril 2021 à 21:22.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Un grand bravo !

      Posté par  (site web personnel) . Évalué à 8.

      Pour ceux qui se demanderaient pourquoi un commentaire de remerciement est mal noté, mon hypothèse serait : premier commentaire d'un nouveau compte, avec un « site perso » vers une boîte qui fait du référencement web.

  • # Commentaire supprimé

    Posté par  . Évalué à 0. Dernière modification le 28 avril 2020 à 12:14.

    Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.